package com.itheima.filter;

import javax.servlet.*;
import java.io.IOException;

public class Demo2Filter implements Filter {

/*
* 完成功能：Filter入门
*           1）：实现Filter接口，import(导包是java.servlet.Filter)然后重写接口Filter里面的方法
*           2）：方法上添加注解@webFilter("/*")--里面/*代表拦截所有请求
            //这个注解加在 TliasWebManagementApplication（应该是启动类）
            //因为Filter是servlet里面的东西，但是为了让Spring识别Filter所以需要将注解加入TliasWebManagementApplication里面
            //这个注解就是@ServletComponentScan
            3)：启动类里面添加@ServletCompanentScan
 */

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("2初始化方法，项目启动启动时执行，执行一次，一般用于初始化资源");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("2拦截器每拦截一次，就会执行一次");
        //这里放行前的逻辑就是指的是前端请求后端数据，进行查看分析，看一下前端需要哪些资源，知道后放行
        System.out.println("2放行前的逻辑....");
        //放行--指的是前段发来请求进行拦截检查
        filterChain.doFilter(servletRequest ,servletResponse);
        System.out.println("2放行前的逻辑....");
        //现在这里面的逻辑就是--拿到数据后Filter会进行数据检查，多的不让你拿走的意思
    }

    @Override
    public void destroy() {
        System.out.println("2销毁方法，项目关闭时执行，执行一次一般用于销毁资源");
    }
    //下面就是过滤器的执行流程，拦截路径，过滤器链

}
